---
id: config-transient
title: Transient prompt
sidebar_label: Transient prompt
---

import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";

:::info
This feature only works in `zsh`, `powershell` and `cmd` for the time being.
:::

Transient prompt, when enabled, replaces the prompt with a simpler one to allow more screen real estate.
You can use go [text/template][go-text-template] templates extended with [sprig][sprig] to enrich the text.
Environment variables are available, just like the [`console_title_template`][console-title] functionality.

Typically, your prompt will simply leave the prompt on the screen when you execute a command (or press enter) like so:

![Before Transient](/img/transient-before.gif)

By enabling Transient Prompt, you can replace the prompt with some other content for a cleaner console as shown here:

![After Transient](/img/transient-after.gif)


## Configuration

You need to extend or create a custom theme with your transient prompt. For example:

```json
{
    "$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
    "blocks": {
        ...
    },
    "transient_prompt": {
        "background": "transparent",
        "foreground": "#ffffff",
        "template": "{{ .Shell }}> "
    }
}
```

The configuration has the following properties:

- background: `string` [color][colors]
- foreground: `string` [color][colors]
- template: `string` - A go [text/template][go-text-template] template extended with [sprig][sprig] utilizing the
properties below - defaults to `{{ .Shell }}> `

## Template ([info][templates])

- `.Root`: `boolean` - is the current user root/admin or not
- `.PWD`: `string` - the current working directory
- `.Folder`: `string` - the current working folder
- `.Shell`: `string` - the current shell name
- `.UserName`: `string` - the current user name
- `.HostName`: `string` - the host name
- `.Env.VarName`: `string` - Any environment variable where `VarName` is the environment variable name

## Enable the feature

<Tabs
  defaultValue="pwsh"
  groupId="shell"
  values={[
    { label: 'powershell', value: 'pwsh', },
    { label: 'cmd', value: 'cmd', },
    { label: 'zsh', value: 'zsh', },
  ]
}>
<TabItem value="pwsh">


Invoke Oh My Posh in your `$PROFILE` and add the following line below.

```powershell
oh-my-posh prompt init pwsh --config $env:POSH_THEMES_PATH/jandedobbeleer.omp.json | Invoke-Expression
// highlight-start
Enable-PoshTransientPrompt
// highlight-end
```

:::caution
If you import **PSReadLine** separately, make sure to import it before the `Enable-PoshTransientPrompt` command.
:::

Restart your shell or reload your `$PROFILE` using `. $PROFILE` for the changes to take effect.

</TabItem>
<TabItem value="cmd">

Set the transient prompt in [clink][clink] to `always` in the `oh-my-posh.lua` script to enable the feature:

```shell
clink set prompt.transient always
```

Restart your shell for the changes to take effect.

</TabItem>
<TabItem value="zsh">

Invoke Oh My Posh in `.zshrc` and add the following line below:

```bash
enable_poshtransientprompt
```

Restart your shell or reload `.zshrc` using `exec zsh` for the changes to take effect.

</TabItem>
</Tabs>

[colors]: /docs/config-colors
[go-text-template]: https://golang.org/pkg/text/template/
[console-title]: /docs/config-title#console-title-template
[sprig]: https://masterminds.github.io/sprig/
[clink]: https://chrisant996.github.io/clink/
[templates]: /docs/config-templates
